<?
	class ModuloFiledata extends Modulo
	{
// Propiedades para el loadClass
		var $oTmpObject;
		var $cSubModule;
// Vectores Internos
		var $aAcciones; 	// array de los makeActionLink
		var $aClass;		// array de las clases que tiene la accion actual
	/// makeActionLink( $cAction , $cParametros = "")
	// verifica si tiene permisos y devuelve un Url
	function autologin( )
	{
		$this->setSubModule( "usuario" );
		$oExe = $this->loadClass( "usuario_exe" );	
		return $oExe->autoLogin();
	}
	function makeActionLink( $cAction , $cParametros = "" )
		{
			// Si no esta Definido => Busca y lo Agrega
			if ( !$this->isAllowed($cAction) ) return false;
			// Arma el HRef
			$cParamAccion = $this->aAcciones[$cAction]['cParametros'];
			// Asigna la Clase
			$cClase = 'accion' . $this->aAcciones[$cAction]['ncTipoAccion'];
			$cNombre = $this->aAcciones[$cAction ]['cNombre'];
			// Arma el Link
			$cHRef = "?" . PARAM_MODULE . "=" . $this->cModule . "&amp;" . PARAM_ACTION . "=$cAction&amp;";
			if ( !empty($cParamAccion) ) {
				$cHRef .= $cParamAccion ;
				if ( $cHRef[strlen($cHRef)-5] != '&amp;' ) $cHRef .= '&amp;';
			}
			if ( !empty($cParametros) ) {
				$cHRef .= $cParametros ;
				if ( $cHRef[strlen($cHRef)-5] != '&amp;' ) $cHRef .= '&amp;';
			}
			return $cHRef;
		}
	function loadLibrary ( $cLibrary )
		{
			require_once( $this->getPath() . "/$cLibrary" );
		}
	// Si $cAction es un String => es un Archivo que esta dentro de su estructura de directorio
	function loadAction ( $cAction, $nTask = 1, $cClassName = '' )
		{
			if ( $nTask == '' ) $nTask = 1;
			// Guarda la Accion y el Paso Actual
				$this->cAction = $cAction;
				$this->nTask   = $nTask;
			// Si no es una Accion Predefinida (acciones del modulo)
			if (  !is_numeric($cAction)  )
			{
				if ( $cAction == 'info' || $cAction == 'config' || $cAction == 'doc'|| $cAction == 'status' || $cAction == 'import' || $cAction == 'export'  || $cAction == 'data' )
					$this->$cAction();
				else
					define( 'LOAD_MODULE_ACTION', true );
				return true;
			} else
			{
				if ( $_COOKIE["cLogin"] && !$this->oUserSession->isLogged() )
				{
					//$oModSeguridad =& loadModule( "seguridad" );	$oModSeguridad->setSubModule( "usuario" );	$oExe = $oModSeguridad->loadClass( "usuario_exe" );
					if ( !$this->autoLogin() )
					{
						setcookie( 'cLogin', null, time()+9999999 );
						$this->setBack( '?' . $_SERVER[QUERY_STRING] , VENTANA_SECUNDARIA);
						$this->cUrlBack =  '?' . PARAM_MODULE .'=seguridad&amp;' . PARAM_ACTION .'=' . INGRESAR_AL_SISTEMA ;
						$this->redirect();
						exit();
					}
				}
				if ( $this->isAllowed( $cAction ) == false )
				{
					// Si esta loggeado y No tiene Permisos
					if ( $this->oUserSession->isLogged() )
					{
						addMessage("No tiene permisos para acceder a esta accion ( " .$this->cModule . ".$cAction )" );
						return false;
					} else
					{
						$this->setBack( '?' . $_SERVER[QUERY_STRING] , VENTANA_SECUNDARIA);
						$this->cUrlBack =  '?' . PARAM_MODULE .'=seguridad&amp;' . PARAM_ACTION .'=' . INGRESAR_AL_SISTEMA ;
						$this->redirect();
						exit();
					}
				}
			}
			$nMaxTask = $this->aAcciones[$this->cAction]['nMaxTask'];
			if (  $nMaxTask && $this->nTask >= $nMaxTask)  
			{
				$this->setRedirect( ACTION_BACK );
			} 
			define( 'LOAD_MODULE_ACTION', true );
			return true;
		}
	function load()
		{
			if ( !is_numeric($this->cAction)  )
				$this->loadTemplatePage();
			else
			{
				$this->cEvent = "onLoad";
				include ( $this->cPath . "/event_ini.php" );
			}
		}
	function getRoles()
		{
			$aRoles = array ( 1 => "Administrador" , 2 => "Usuario"  );
			return  $aRoles;
		}
	function isAllowed( $cAction )
		{
		// Si no hay base => los permisos los hace por archivo action
			if ( empty($this->aAcciones) )
			{
				include ( $this->cPath . "/action_ini.php" );
			}
			return !empty($this->aAcciones[$cAction]) ;
		}
	function show()
		{		
			if ( !is_numeric($this->cAction)  )
				$this->showTemplatePage();
			else
			{
				if ( $this->cTarget == 'body_main' )
					$this->showMessages();
				$this->cEvent = "onShow";
				include ( $this->cPath .  "/event_ini.php" );
			}
		}
	function refresh( $cClass , $cMethod = '' )
		{
			$this->cEvent = "onShow";
			include ( $this->cPath . "/event_ini.php" );
		}
	function getActionArray( $cAction  )
		{
			$cHRef = $this->makeActionLink( $cAction );
			if ( $cHRef != "" )
			{
				$cIcono			= $this->cUrlImages . '/'. $this->aAcciones[$cAction ]['cIcono'];
				return array( $cHRef, $cIcono, $this->aAcciones[$cAction ]['cNombre'] );
			}
		}
	function makeAction ( $cValor, $cAction , $cParametros = '', $ncModo = '', $cAccessKey = '', $cTarget = '' )
		{
			$cHRef = $this->makeActionLink( $cAction , $cParametros, $ncModo );
			if ( $cAccessKey != '' ) $cPropiedades = " accesskey='$cAccessKey' ";
			//$cPropiedades = "onclick='abrirPermisos($cAction );'";
			if ( $cHRef == "" )
			{
				return $cValor;
			} else
			{
				if ( $cValor != '' )
				{
					$cNombre        = $cValor;
					if ( $ncModo == '' ) $ncModo 				= $this->aAcciones[$cAction ]['ncModo'];
					return $this->makeLink( $cHRef , $cClase, $cNombre , '', $ncModo, 3, $cTarget, $cPropiedades );
				}
				else
				{
					$ncTipoAccion 	= $this->aAcciones[$cAction ]['ncTipoAccion'];
					$cNombre        = $this->aAcciones[$cAction ]['cNombre'];
					$cClase			= 'accion' . $ncTipoAccion;
					$cIcono			= $this->cUrlImages . '/'. $this->aAcciones[$cAction ]['cIcono'];
					if ( $ncModo == '' ) $ncModo = $this->aAcciones[$cAction ]['ncModo'];
					return $this->makeLink( $cHRef , $cClase, $cNombre , $cIcono, $ncModo, $ncTipoAccion, $cTarget, '', $cPropiedades );
				}
			}
		}
	function &loadClass ( $cClass )
		{
		// Agrega el .php si no lo trae y lo pasa a lower case
				$cClass = strtolower( $cClass );
				if ( substr( $cClass, -4) != '.php' ) $cClass .= '.php' ;
			if ( empty( $this->aClass[$cClass] ) )
			{
				// Si esta anidado
					if ( isset( $this->oTmpObject ) )
					{
						$oAuxiliar = &$this->oTmpObject;
					}
				// Arma el Nombre Completo del Archivo
					$cArchivo = $this->getPath();
					if ( $this->cSubModule ) $cArchivo .= '/' . $this->cSubModule;
					$cArchivo .= '/' . $cClass;
				// Verifica que Exista
					if( !file_exists ( $cArchivo ) )
					{
						die( "La clase $cArchivo no existe " );
					}
				// Incluye en Archivo de la Clase (que debe agregar un objeto en el Array de Clases)
					include_once ( $cArchivo ) ;
					if ( isset( $this->oTmpObject ) )
					{
					// Lo Pasa al Vector de Clases
						$this->aClass[$cClass] = &$this->oTmpObject;
						unset($this->oTmpObject);
					} else
					{
						die( "No se pudo crear la clase $cArchivo " . $this->cModule );
					}
				// Si esta anidado
					if ( isset( $oAuxiliar) )
					{
						$this->oTmpObject = &$oAuxiliar;
					}
			}
			// Devuelve la referencia al objeto nuevo
			return $this->aClass[$cClass];
		}
	}
?>